home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
FONTEDIT.ZIP
/
MOUSER.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-01-02
|
3KB
|
128 lines
{Another Unit By THE DARKMAN Done About 1/2 A year ago when i was young and
innocent}
Unit Mouser;
Interface
Procedure Buttons(Left,Right : Boolean; Var lb,rb : Boolean);
Function ClickIn(X1,Y1,X2,Y2 : Integer) : Boolean;
Function NoDriver : Boolean;
Procedure LoadMouse;
Function Xpos : Word;
Function Ypos : Word;
Procedure MouseOff;
Procedure MouseXY(X,Y : Integer);
Procedure MouseRange(X1,Y1,X2,Y2 : Word);
Implementation
Uses Dos,Crt;
Var Lb,Rb : Boolean;
Regs : Registers;
{---------------------Procedure To Load Mouse--------------------------------}
Procedure LoadMouse;
Begin
Regs.Ax := $1;
Intr($33, Regs);
end;
{---------------Procedure To Hide Mouse Cur-----------------------------------}
Procedure MouseOff;
Begin
Regs.Ax := $0;
Intr($33, Regs);
end;
{----------------FUNCTION TO LIMIT X + Y AREA OF MOUSE POS--------------------}
Procedure MouseRange(X1,Y1,X2,Y2 : Word);
Begin
Regs.Ax := $8;
Regs.Cx := Integer (Y1) Shl 3;
Regs.Dx := Integer (Y2) Shl 3;
Intr($33,Regs);
Regs.Ax := $7;
Regs.Cx := Integer (X1) Shl 3;
Regs.Dx := Integer (X2) Shl 3;
Intr($33,Regs);
end;
{--------------------RETURNS THE XPOS OF MOUSE CURSOR------------------------}
Function Xpos : Word;
Begin
Regs.Ax := $0003;
Intr($33,Regs);
Xpos := Regs.Cx Shr 3;
end;
{----------------------------------------------------------------------------}
{------------------RETURNS YPOS OF MOUSE CURSOR------------------------------}
Function Ypos : Word;
Begin
Regs.Ax := $0003;
Intr($33,Regs);
Ypos := Regs.Dx Shr 3;
end;
{-------------------SENDS MOUSE TO X / Y POSITION----------------------------}
Procedure Mousexy(X,Y : Integer);
Begin
Regs.Ax := $0004;
Regs.Cx := X Shl 3;
Regs.Dx := Y Shl 3;
Intr($33,Regs);
end;
{--------PROCEDURE FOR TESTING IF BUTTON WAS PRESSED IN AREA DEFINED---------}
Function ClickIn(X1,Y1,X2,Y2 : Integer) : Boolean;
Var Mxpos,Mypos,lb,rb : Boolean;
Begin
Buttons(lb,rb,lb,rb);
If (Xpos > X1-2) And (Xpos < X2) Then Mxpos := True Else Mxpos := False;
If (Ypos > Y1-2) And (Ypos < Y2) Then Mypos := True Else Mypos := False;
If (Mypos) And (MxPos) And Lb Then ClickIn := True else ClickIn := False;
end;
{----------------------------------------------------------------------------}
{-------------PROCEDURE TO TEST WHICH BUTTONS WHERE PRESSED------------------}
Procedure Buttons(Left,Right : Boolean; Var Lb,rb : Boolean);
Begin
Regs.Ax := $0003;
Regs.Bx := $0000;
Intr($33,Regs);
If(Regs.Bx And $01) = $01 Then Left := True Else Left := False;
If(Regs.Bx And $02) = $02 Then Right := True Else Right := False;
Lb := Left;
Rb := Right;
end;
{----------------------------------------------------------------------------}
{-----------------DO NOT TRUST THIS CODE CHECKS IF M DRIVER PRESENT-----------}
Function NoDriver : Boolean;
Begin
Regs.Ax := 0;
Intr($33,Regs);
If Regs.Ax > 0 Then NoDriver := False Else NoDriver := True;
end;
end.